草庐IT

c++ - std::strftime 的返回值

全部标签

ruby - 为什么要返回一个枚举器?

我很好奇为什么ruby​​返回一个Enumerator而不是一个Array,而Array似乎是一个显而易见的选择。例如:'foo'.class#=>String大多数人将字符串视为字符数组。'foo'.chars.class#=>Enumerator那么为什么String#chars返回一个Enumerable而不是一个数组呢?我假设有人对此进行了很多思考并决定Enumerator更合适,但我不明白为什么。 最佳答案 如果你想要一个数组,调用#to_a。Enumerable和Array的区别在于一个是惰性的,另一个是渴望性的。这是良

ruby - 如何在初始化父类时返回子类的新实例?

给定一个类层次结构如下:classAdefinitialize(param)ifparam==1then#initializeandreturninstanceofBelse#initializeandreturninstanceofCendendendclassB是否可以实际初始化并返回B的实例?或C初始化时A?IE。my_obj=A.new(param)会导致my_obj作为类B的一个实例或C取决于param的值,在A.initialize(param)中检查.在我的用例中,它只在运行时知道要使用哪个子类(B或C),而父类(A)基本上从未真正使用过。我认为移动决定是否B的逻辑可能是

ruby - 我可以通过猴子修补 NilClass 来为缺少的方法返回 nil 吗?

在其他语言中(例如objective-c)在nil对象上调用方法会静默失败并返回nil但在ruby​​中你会得到这样的错误...undefinedmethod`some_method'fornil:NilClass这(对我而言)会产生如下代码:ifsome_object&&some_object.cool?#insteadofifsome_object.cool?#dosomecoolstuffend或some_object.do_awsome_thingifsome_object这一切都显得倒退和怪异。两个问题我做错了什么,处理可能出现nil对象的正确方法是什么如果我只是猴子修补ni

ruby - 从 'next' 返回值是个坏主意吗?

应该很简单。我想,从阅读thisblogpost我可以在我的next命令之后立即返回一些东西:如果axis_range=="test",下一个“新值”我真正想做的是在同一行记录下一个原因:next@logger.info('跳过这个项目是为了好玩')unless(elephants.size>0)我在rubydoc上找不到任何关于next用法的讨论。.该代码肯定有效。我意识到我可以用unlessblock来做到这一点,但是那行代码太简洁了。两个问题:有更好的文档吗?next的这种用法是不是有点奇怪而不是“ruby-ish”? 最佳答案

ruby - strftime 数小时内无填充

当使用strftime@tzformat="%F,%l:00%p"时:我只想在逗号和小时之间留一个空格。但是%l没有为10、11和12提供空间,而如果我输入“%l”我会为0-9提供两个空间(一个来自填充,另一个来self添加的空间)。月份有无填充选项。我几个小时都不一样。我错过了什么? 最佳答案 -修饰符删除填充。如果你使用%-l而不是%l它根本不会放一个空格,你可以手动添加一个空格。Time.now.strftime@tzformat="%F,%-l:00%p"#=>"2015-01-29,8:00PM"(Time.now+360

ruby - ||运算符,知道结果后返回吗?

我有一个类似于下面的函数:defcheckreturn2==2||3!=2||4!=5end我的问题是,即使第一个比较为真,Ruby是否会执行所有比较,从而函数返回真。我的检查要密集得多,所以我想知道我是否应该以不同的方式解决这个问题,以避免每次都进行所有检查。irb(main):004:0>2==2||3!=2||4!=5=>true谢谢。 最佳答案 Ruby使用short-circuitevaluation.这适用于||和&&。对于||,如果左操作数为真,则不计算右操作数。使用&&,如果左操作数为假,则不计算右操作数。

ruby-on-rails - Ruby Timeout::timeout 不会触发异常并且不会返回记录的内容

我有这段代码:begincomplete_results=Timeout.timeout(4)doresults=platform.search(artist,album_name)endrescueTimeout::Errorputs'Printmesomethingplease'end然后我启动包含这段代码的方法,好吧,这是堆栈跟踪的开始:Exceptionmessage:executionexpiredExceptionbacktrace:/***/****/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/1.8/timeout.rb:64:i所以我天真

Ruby strftime : Day without leading zero, %e 不工作

我正在尝试用没有前导零的日期来格式化日期使用%d它工作正常,但前导零date_time.strftime("%d/%m/%y")result:04/01/11我搜索了一下,发现我应该使用%e而不是%d,但是执行以下操作会得到一个空字符串。date_time.strftime("%e/%m/%y")result:这跟Ruby的版本有关系吗?我在Windows机器上使用v1.8.7。更重要的是,是否有另一种方法可以在没有前导零的情况下完成一天(比gsub更方便)? 最佳答案 如果你想删除月份或日期的前导零,只需在格式前添加一个减号,如下

ruby - Ruby 方法能否作为迭代器产生或根据上下文返回数组?

我在Ruby中有一个任意方法可以产生多个值,因此可以将其传递给一个block:defarbitraryyield1yield2yield3yield4endarbitrary{|x|putsx}我想修改此方法,以便在没有block的情况下,它仅将值作为数组返回。所以这个构造也可以工作:myarray=arbitrarypa----->[1,2,3,4,5]这在Ruby中可行吗? 最佳答案 defarbitraryvalues=[1,2,3,4]returnvaluesunlessblock_given?values.each{|va

c - Ruby C 扩展开发人员的命名约定

在用C为ruby​​编写扩展时,我对遵循正确的命名约定很感兴趣。具体来说,我指的是将_p添加到谓词的函数名称以及为变量添加前缀m代表模块,c代表类等等。例如,如果我们想在C语言中定义一个像下面这样的谓词方法,我们应该在定义该方法的函数中使用_p作为后缀。classMyClassdefawesome?trueendend在C中:staticVALUEmy_extension_my_class_awesome_p(VALUEself){returnQtrue;}voidInit_my_extension(void){VALUEcMyClass=rb_define_class("MyClas